﻿#region Using

using System;
using Vk.Methods.Photos;

#endregion

namespace Vk.Methods.Pages
{
    /// <summary>
    ///     Страница
    /// </summary>
    public class Page
    {
        /// <summary>
        ///     Указывает, кто может редактировать вики-страницу
        /// </summary>
        public AccessWikiPrivacy? WhoCanEdit;

        /// <summary>
        ///     Указывает, кто может просматривать вики-страницу
        /// </summary>
        public AccessWikiPrivacy? WhoCanView;

        /// <summary>
        ///     Дата создания страницы
        /// </summary>
        public DateTime Created { get; set; }

        /// <summary>
        ///     Идентификатор создателя страницы
        /// </summary>
        public int? CreatorId { get; set; }

        /// <summary>
        ///     Указывает, может ли текущий пользователь редактировать текст страницы
        /// </summary>
        public bool? CurrentUserCanEdit { get; set; }

        /// <summary>
        ///     Указывает, может ли текущий пользователь изменять права доступа на страницу
        /// </summary>
        public bool? CurrentUserCanEditAccess { get; set; }

        /// <summary>
        ///     Дата последнего изменения
        /// </summary>
        public DateTime Edited { get; set; }

        /// <summary>
        ///     Идентификатор пользователя, который редактировал страницу последним
        /// </summary>
        public int? EditorId { get; set; }

        /// <summary>
        ///     Идентификатор сообщества
        /// </summary>
        public int? GroupId { get; set; }

        /// <summary>
        ///     HTML представление страницы
        /// </summary>
        public string Html { get; set; }

        /// <summary>
        ///     Идентификатор страницы
        /// </summary>
        public int? Id { get; set; }

        /// <summary>
        ///     Заголовок родительской страницы для навигации, если есть
        /// </summary>
        public string Parent { get; set; }

        /// <summary>
        ///     Заголовок второй родительской страницы для навигации, если есть
        /// </summary>
        public string Parent2 { get; set; }

        /// <summary>
        ///     Текст страницы в вики-формате
        /// </summary>
        public string Source { get; set; }

        /// <summary>
        ///     Название страницы
        /// </summary>
        public string Title { get; set; }

        /// <summary>
        ///     Адрес страницы для отображения вики-страницы
        /// </summary>
        public string ViewUrl { get; set; }

        public Page(ApiNode node)
        {
            Id = node.Int("id");
            GroupId = node.Int("group_id");
            CreatorId = node.Int("creator_id");
            Title = node.String("title");
            CurrentUserCanEdit = node.Bool("current_user_can_edit");
            CurrentUserCanEditAccess = node.Bool("current_user_can_edit_access");

            WhoCanView = (AccessWikiPrivacy?) node.Int("who_can_view");
            WhoCanEdit = (AccessWikiPrivacy?) node.Int("who_can_edit");

            Edited = DateTime.Parse(node.String("edited"));
            Created = DateTime.Parse(node.String("created"));
            EditorId = node.Int("editor_id");
            Views = node.Int("views");
            Parent = node.String("parent");
            Parent2 = node.String("parent2");
            Source = node.String("source");
            Html = node.String("html");
            ViewUrl = node.String("view_url");
        }

        /// <summary>
        /// 	Количество просмотров вики-страницы.
        /// </summary>
        public int? Views { get; set; }
    }
}